<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">

   <!--xsl:param name="name"      select="/.."/>
   <xsl:param name="version"   select="/.."/>
   <xsl:param name="file"      select="/.."/-->
   <xsl:param name="resource"/>
   <xsl:param name="class"/>
   <xsl:param name="namespace" select="/.."/>

   <xsl:template match="node()">
      <xsl:copy>
         <xsl:copy-of select="@*"/>
         <xsl:apply-templates/>
      </xsl:copy>
   </xsl:template>

   <xsl:template match="
       builtin-modules/text()[
           following-sibling::node()[1][self::module][@uri = $namespace]
         ]"/>
   <xsl:template match="builtin-modules/module[@uri = $namespace]"/>

   <xsl:template match="builtin-modules">
      <xsl:copy>
         <xsl:copy-of select="@*"/>
         <xsl:apply-templates select="node()[not(self::text()) or position() != last()]"/>
         <xsl:text>&#10;&#10;            </xsl:text>
         <xsl:comment> Added by the EXPath Packaging System. </xsl:comment>
         <xsl:text>&#10;            </xsl:text>
         <!--module src="resource:org/expath/repo/{ $name }/{ $version }/{ $file }"
                 uri="{ $namespace }"/-->
         <xsl:choose>
            <xsl:when test="$resource">
               <module uri="{ $namespace }" src="resource:{ $resource }"/>
            </xsl:when>
            <xsl:otherwise>
               <module uri="{ $namespace }" class="{ $class }"/>
            </xsl:otherwise>
         </xsl:choose>
         <xsl:copy-of select="text()[last()]"/>
      </xsl:copy>
   </xsl:template>

</xsl:stylesheet>
